{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:85: DeprecationWarning: Function fetch_mldata is deprecated; fetch_mldata was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml.\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n",
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:85: DeprecationWarning: Function mldata_filename is deprecated; mldata_filename was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml.\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_mldata\n",
    "mnist = fetch_mldata('MNIST original',data_home='./datasets/minst')\n",
    "mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X, y = mnist[\"data\"], mnist[\"target\"]\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)\n",
    "plt.imshow(some_digit_image, cmap = matplotlib.cm.binary, interpolation=\"nearest\")\n",
    "plt.axis(\"off\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_5 = (y_train == 5) # True for all 5s, False for all other digits.\n",
    "y_test_5 = (y_test == 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(alpha=0.0001, average=False, class_weight=None,\n",
       "              early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "              l1_ratio=0.15, learning_rate='optimal', loss='hinge',\n",
       "              max_iter=1000, n_iter_no_change=5, n_jobs=None, penalty='l2',\n",
       "              power_t=0.5, random_state=42, shuffle=True, tol=0.001,\n",
       "              validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import SGDClassifier\n",
    "sgd_clf = SGDClassifier(random_state=42)\n",
    "sgd_clf.fit(X_train, y_train_5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.94605, 0.9624 , 0.95575])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "never_5_clf = Never5Classifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.9109 , 0.9083 , 0.90975])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[53474,  1105],\n",
       "       [ 1611,  3810]], dtype=int64)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_perfect_predictions = y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]], dtype=int64)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "confusion_matrix(y_train_5, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.775178026449644"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "precision_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True, ..., False, False, False])"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7028223574986165"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7372291021671827"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([542.11934815])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3,\n",
    "                            method=\"decision_function\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEKCAYAAAACS67iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXwV1dnA8d+TjcSAQMISIBgQwh6SQIAAsiiyirgURVTqQt0QrLXW4utbQWtrRWotLa3ltYhaFbcWaVVQkMWKIEH2PSBLgJAQ1gDZz/vH3JCb5Ca5CTeZe2+e7+dzPzN3zpkzz+TePJnMnDkjxhiUUkr5vgC7A1BKKeUZmtCVUspPaEJXSik/oQldKaX8hCZ0pZTyE5rQlVLKT1SZ0EVkvohkiMi2CspFROaISKqIbBGRXp4PUymlVFXcOUJfAIyqpHw0EOt4PQj89fLDUkopVV1VJnRjzGrgZCVVbgLeMpa1QBMRaeWpAJVSSrknyANttAEOO71Pcyw7VraiiDyIdRRPeHh47y5dulR7Y+nZ6Rw5e6RmkSqfJCIESACBAYEIUrIcofht8fLiZUEBQQiCiJQuF0Gw2iueL67nvCxAAggKCLq0LFACCQ0KJUD0slN9dvYs7N1bfnlsLFx5JZw6Bfv3ly/v0gXCw+HECauNq6+ueQwbNmw4YYxp7qrMEwldXCxzOZ6AMWYeMA8gKSnJpKSkVHtj2XnZnLp4itzCXIpMkXPbZQIo817LKyw3xnCx4CJFpuhSPYPBGHOpXvG8p8ov5F+g0BRSZIoqfeUW5HIu7xxnc89yPv/8pRjL1jOULMspyOHUxVOX2i8sckxNIYVFheQV5nEh/wIFRQXkF+VTUFRAXmEe7ggPDqdpWFMaBDYgLDiMpqFNCQ8JJyIsgobBDYm8IpLw4HCahzcnqmEUHSM60vyK5kReEal/DGySnw/GQEjI5bVTVAR5eVZSLqtZMwgNhQsX4KSL8xnNm0ODBnD+POTkQGRkzeMQkYMVlXkioacBbZ3eRwNHPdCuSw1DGtIwpGFtNa/qqYKiAnIKcsgvzCe/KJ+zuWc5nXOavMI88grzyLqQxc4TOzlx4QRnc8+SW5hLdl4253LPkXk+kz1ZeziXe45TOacoKCoo135IYAhRDaPo1aoXA6IHENcyjrgWcbRu1PrSfxGqdowdC199BZMnw69+BW3a1KydLl2gb1/4xz8qrnPFFdarIuHh1qu2eCKhLwamishCoB9wxhhT7nSLUt4sKCCo1IFCi/AWNW7rYv5Fsi5mcejMIQ6ePkjG+QyOnDtC2tk01hxew6Jdiy7VDQkMIfrKaFo1bEXj0MZ0iexCUuskBscMps2VNcw86hJjYPlyKCyEf/0LXnzRWp6fD8HB1WsrJ6f669S1KhO6iLwHDAWaiUgaMAMIBjDGvAZ8BowBUoELwH21FaxSviAsOIzo4Giir4xmQNsB5cozzmewLWMb2zK2kXY2jbSzaZeuDS3bv+zS6Z+ohlG0DG9Ji/AWDGs/jAd6P0BEWERd747PysqyToEUFsIrr8DUqVZCLiyEa66Bfv3gt7+Fhm7+w5+ba51W8WZVJnRjzMQqyg3wqCeCyc/PJy0tjZycHE80V++EhoYSHR1NsLcfRtRzLcJbcF3767iu/XXlynILctmWsY0VB1aw+fhmzuae5YdTPzB9+XRmrJzBDZ1uoFNEJwZeNZAhMUNo1KCRDXvgWcbAuXOwcCEMHAjdusEtt8DIkXDPPVYCnjgRPv0UbroJ3njDSqxbtlhJuSI9e8LRoxAdDTExJUfXubmQlAR/+pN11D5rltV+VXJyvD+hWxerbHj17t3blLV//36TmZlpioqKypWpyhUVFZnMzEyzf/9+u0NRteDbw9+aSf+cZDr8sYNhJoaZmNAXQs3It0eaxbsW2x1ejV24YIyV0kteL75Y+n2nTuXrPPOMNe3c2ZhZs4w5d66kzcJCY7ZvL6lbkZUrjYmLs+p88knVsYaEGDN9+uXv8+UCUkwFedWrLrvn5OQQGRmpF4lqQESIjIzU/278VHJ0Mm/d8hapj6Vy+pen+fyuz7mzx51szdjKuIXjeOzzxzh2zrcuXa1eDfPmlV728cfw4IPW/IIF1jQ/H9LSrO6CK1bA3XdbdR5/HHbvhqeeso64MzNhxgwIDITu3a11f/KTirc/ZAj897/Qrh0sW1ay3NWvkDEwbRoMGlTTva0bYmx6YpGrbos7d+6ka9eutsTjL/RnWL/kFORw/yf3s3DbQsKCw3h15Ks80PsBu8Oq0nffWadL/vY3iIqCG2+EmhzHvfuu1Vbv3tZpm0cdJ3+bNbO6F+7fD+3bV95GZqZ1rj0mxvqDceed8NxzcMcdVt9ybyMiG4wxSa7KvOoIXSlVPaFBobz7o3fZPmU7vVr14sH/PMidH9/JxfyLdofm0rFj0LJlybnv2FgYN65myRys5PvqqzBpkpXUIyOttnftso6qq0rmYPURj4mx5ouKrHPtDz0E8fFWoi9efvYsFJTvkepVNKGXERgYSEJCAj169OC2227jQvEnehlSUlJ47LHHKiw/evQo48ePv+ztqPqra/OuLJu0jAd6PcB7295j0BuDyDyfaXdYpRhjnT7JyLDeT5kC117rufb79bOOyteurfmNO8OGwcGD8Ic/wIED1pG6MZCeDo0bw/z5nou3NmhCLyMsLIxNmzaxbds2QkJCeO2110qVG2MoKiqqYG3XkpKSmDNnToXlrVu35qOPPqpRvEoVaxDUgHk3zuPv4/7OpvRNDJg/gG8Pf2t3WIB1pDt6tHXO+6uvrDsu5861OyrXRKxTN5MmWb1gTpwoOa/u7b1cNKFXYtCgQaSmpnLgwAG6du3KlClT6NWrF4cPH+aLL76gf//+9OrVi9tuu43s7GwA1q9fz4ABA4iPj6dv376cO3eOlStXMnbsWABWrVpFQkICCQkJJCYmcu7cOQ4cOECPHj0A68LwfffdR1xcHImJiaxYsQKABQsWcOuttzJq1ChiY2N56qmn7PmhKK93f+L9LJ64mKPnjjJ4wWD+saWSWxvrSHg4LF0KixZZR+Xe3rM2OBjefBM2bLBOyfhKQvfEnaK1ZujQ8stuv936V+3CBRgzpnz5vfdarxMnoOxZjJUr3d92QUEBn3/+OaNGWSMH7969mzfeeIO//OUvnDhxghdeeIFly5YRHh7OSy+9xCuvvML06dOZMGEC77//Pn369OHs2bOEhYWVanf27NnMnTuXgQMHkp2dTWiZb8hcx2HL1q1b2bVrFyNGjGDPnj0AbNq0iY0bN9KgQQM6d+7MtGnTaNu2LUqVNSZ2DDum7GD0O6OZ9K9JCMJdPe+yJZYHnK7R/vnPtoRQIyLQqJF17tzxK6gJ3ddcvHiRhIQEwDpCnzx5MkePHiUmJobk5GQA1q5dy44dOxg4cCAAeXl59O/fn927d9OqVSv69OkDwJUuLpEPHDiQJ554grvuuotbb72V6OjoUuX//e9/mTZtGgBdunQhJibmUkIfNmwYjRs3BqBbt24cPHhQE7qqUEyTGNY/sJ7hbw/n/sX3Ex8VT48WPeo0BmPg9det+Z07a37x0y5FRZCQYJ37B03ol6WyI+orrqi8vFmz6h2RFys+h15WuNOIOsYYhg8fznvvvVeqzpYtW6rsQz99+nRuuOEGPvvsM5KTk1m2bFmpo/TKupE2aNDg0nxgYCAF3n7JXdkuPCScD2/7kF7zenHzwptJeTCFJqFN6jSGW2+1jnRrMFq27QICrJ4469bBs89Cx452R1Q5PYdeA8nJyXzzzTekpqYCcOHCBfbs2UOXLl04evQo69evB+DcuXPlku6+ffuIi4vjl7/8JUlJSezatatU+eDBg3nnnXcA2LNnD4cOHaJz5851sFfKX7W5sg1v3fwW+0/t55b3byk17HRtCg+3EuILL5TcJOSLRoyAM2egR4/LG8e8LmhCr4HmzZuzYMECJk6cSM+ePUlOTmbXrl2EhITw/vvvM23aNOLj4xk+fHi5OzdfffVVevToQXx8PGFhYYwePbpU+ZQpUygsLCQuLo4JEyawYMGCUkfmStXEyI4jmTN6DisPrGTBpgW1vr01a0r6cLdsWeubq1U//amVyKdN8/5+6HqnqJ/Rn6GqSEFRAb3+1ov07HS2Tdl2WUMEV6X4zOOKFa47N/ia6dPhpZfg0CGw+7KV3imqlCIoIIjXxr5Gdl42Ez6aUGunXi463aTqD8kcrHHUDxywP5lXRRO6UvXIgLYDeHn4y6w8sJLnVj5XK9sIDbXOmS9cWCvN20KkZHgAb6YJXal6ZkqfKYyJHcOsNbPIOJ/h0bZPnYIvv7TGF58wwaNNKzdoQleqnhERfjfsd+QV5vGzpT/zaNsREdaDKb76yqPNKjdpQleqHoprGcfUPlN5f9v7nMk545E2P/mkZN5xg7WqY5rQlaqn7oy7k0JTyJx1FQ8c5y5j4Oabrfl9+y67OVVDmtDLcB4+98Ybb+T06dMebX/BggVMnToVgJkzZzJ79myPtq+Uu/q26csNsTfw+29/z+mcy/ueO8amA7z/5ht/pgm9DOfhcyMiIi4NlqWUvxERnh3yLGdyz1z2iIwBAVa3vmqOLK08TBN6Jfr378+RI0cuvX/55Zfp06cPPXv2ZMaMGZeWv/XWW/Ts2ZP4+HgmTZoEwL///W/69etHYmIi119/PcePH6/z+JWqSt82fbm66dX8e8+/a9xGURE0bAi/+pXvDb7lb7x2cK7HlzzOpvTyg2RdjoSoBF4d9apbdQsLC1m+fDmTJ08G4IsvvmDv3r189913GGMYN24cq1evJjIykt/85jd88803NGvWjJMnTwJwzTXXsHbtWkSE119/nVmzZvH73//eo/ujlCfc2uVW/rD2D5zPO094SHjVK5SxerU13bHDw4GpavPahG6X4uFzDxw4QO/evRk+fDhgJfQvvviCxMREALKzs9m7dy+bN29m/PjxNGvWDICIiAgA0tLSmDBhAseOHSMvL4/27jzcUCkbjI4dzexvZ/N56ueM71b9RyEuXmxNtaui/bw2obt7JO1pxefQz5w5w9ixY5k7dy6PPfYYxhiefvppHnrooVL158yZ43LI3GnTpvHEE08wbtw4Vq5cycyZM+toD5SqnsExg2kR3oK3t7xdo4T+hz9AixbgYvh/Vcf0HHoFGjduzJw5c5g9ezb5+fmMHDmS+fPnX3rU3JEjR8jIyGDYsGF88MEHZGVlAVw65XLmzBnatGkDwJtvvmnPTijlhqCAIG7rdhvL9i/jYv7FqldwUjy+nuMJi8pmmtArkZiYSHx8PAsXLmTEiBHceeed9O/fn7i4OMaPH8+5c+fo3r07zzzzDEOGDCE+Pp4nnngCsLok3nbbbQwaNOjS6RilvNUtXW7hQv4FPtzxYbXW69YNIiPhySdrKTBVLTp8rp/Rn6GqiSJTROyfYmndqDVf3/e1W+vk5FiPl3vkEQgMrOUA1SU6fK5SqlIBEsCknpNYc3gNR84eqXoFrAc+TJtWs0c9qtqhCV0pBVhDARSZIt7f/r5b9Ysf/tyvXy0GparF6xK6XaeA/IH+7NTl6BTZiaTWSby5ueqL+M53hDZsWItBqWrxqoQeGhpKVlaWJqYaMMaQlZVFaGio3aEoHzah+wS2HN/CgdMHKq33/ffWVHvjehev6oceHR1NWloamZmZdofik0JDQ4mOjrY7DOXDbu16K7/48hd8tOMjnhxQcdeVjAzrCT5lbstQNvOqXi5KKft1nduVNo3asOzHy+wORbmgvVyUUm67IfYGvj70NTkFOS7LjxyB3/0OCgvrODBVJbcSuoiMEpHdIpIqItNdlF8lIitEZKOIbBGRMZ4PVSlVF4a2G0peYR7fHPrGZfmcOfD007BtWx0HpqpUZUIXkUBgLjAa6AZMFJFuZar9L/CBMSYRuAP4i6cDVUrVjWvbXUtoUGiFQ+rOmmVNe/asw6CUW9w5Qu8LpBpj9htj8oCFwE1l6higeGiexsBRz4WolKpL4SHhXH/19SzevbjSHmc69rn3cSehtwEOO71PcyxzNhO4W0TSgM+Aaa4aEpEHRSRFRFK0J4tS3uvGTjfyw+kf2J21u9Ty4u6K999vQ1CqSu4kdFd/h8v+2Z4ILDDGRANjgLdFpFzbxph5xpgkY0xS8+bNqx+tUqpOXHPVNQDlzqNnZFjTRx6p64iUO9xJ6GlAW6f30ZQ/pTIZ+ADAGPMtEAroEINK+aiuzboS1TCKrw6UfmrFqFFgDCS57DSn7OZOQl8PxIpIexEJwbroubhMnUPAMAAR6YqV0PWcilI+SkQYfvVwlqYupchY9/kbY72U96oyoRtjCoCpwFJgJ1Zvlu0i8ryIjHNU+znwgIhsBt4D7jV6/75SPm1wzGCyLmax7+Q+APbsgYgI+PxzmwNTFXLr1n9jzGdYFzudlz3rNL8DGOjZ0JRSdurXxhpG8etDXxMbGUtKCpw+DW3KdolQXkPvFFVKudSjRQ+aXdGMVQdXAfDrX1vLu5W9C0V5DU3oSimXRITrr76eT/d8Sn5hPrsdPRiDvGpIP+VME7pSqkK3d7udrItZrD5gdV9MTLQ5IFUpTehKqQoNbTcUgDWH1nLTTTBjhr3xqMrpP09KqQo1DWtKh6Yd2JS5nkWL7I5GVUWP0JVSlUqOTmb1/m/ZuVN7Ins7TehKqUoNbDuQE7nHuOPRvXaHoqqgCV0pVanhV48EIKLvEpsjUVXRhK6UqlTOsavhVHtONFpudyiqCprQlVKV+u47YO9o9hZ9WeFj6ZR30ISulKrUkSPAvpHkFl3kqx++qrK+so8mdKVUpR57DL5+czjBAcGsPrja7nBUJTShK6Uq1bAhXNMvjF6tevHNYdcPjlbeQRO6UqpCBQXW2C3z51vdF9cfWU9uQa7dYakKaEJXSlVo1y5revo09G/bn9zCXLZmbLU3KFUhTehKqQpt2mRNR46EhKgEa1n6JhsjUpXRhK6UqtDmzRASAp07Q4emHWga2pR1aevsDktVQAfnUkpVaPZsa2qNgS70bdOXdUc0oXsrPUJXSrlUZD0bmqZNS5b1a9OP7ZnbuZB/wZ6gVKU0oSulXAoIAGPg5MmSZYmtEikyRWzL2GZfYKpCmtCVUi4ZF6Pl6oVR76YJXSnl0pNPQv/+pRN7TOMYGjdorAndS2lCV0q5tG4dBAaCSMkyESE+Kl4TupfShK6UKqew0OqD3qtX+bKElglsOb6FwqLCug9MVUoTulKqnD174Px56N27fFnv1r05n3+eHZk76j4wVSlN6EqpcjZssKauEnq/Nv0AWH90fR1GpNyhCV0pVU7btvDjH0OXLuXLYiNjaXZFM1YdXFX3galK6Z2iSqlyhgyxXq4ESAB9Wvdhc/rmug1KVUmP0JVSpRQVweHDrvuhF+vTug9bM7Zy8uLJiiupOqcJXSlVyt69cNVV8PbbFdcZ3mE4RaaIbw7pAy+8iSZ0pVQp339vTePjK64T39Iq3HJ8Sx1EpNylCV0pVcrrr1vTbt0qrtOoQSM6RnRkY/rGuglKuUUTulKqlK++sqbBwZXX69GiB9szt9d+QMptmtCVUpfk5VnTyk63FOvevDt7s/bqM0a9iFsJXURGichuEUkVkekV1LldRHaIyHYRedezYSql6kJgIKxZAx9+WHXdni17UmgK9Y5RL1JlP3QRCQTmAsOBNGC9iCw2xuxwqhMLPA0MNMacEpEWtRWwUqr2BAZaIyy6o/jC6Mb0jSS2SqzFqJS73DlC7wukGmP2G2PygIXATWXqPADMNcacAjDGZHg2TKVUXfjyS/j4Y/fqxkbG0jS0KWsOr6ndoJTb3EnobYDDTu/THMucdQI6icg3IrJWREa5akhEHhSRFBFJyczMrFnESqla8+qrMHOme3UDJIDk6GTWpq2t1ZiU+9xJ6OJiWdl7yIKAWGAoMBF4XUSalFvJmHnGmCRjTFLz5s2rG6tSqpZ99lnp8c+rkhydzI7MHZzOOV17QSm3uZPQ04C2Tu+jgaMu6nxijMk3xvwA7MZK8EopH1H8T3NEhPvrDI4ZjMHoHaNewp2Evh6IFZH2IhIC3AEsLlNnEXAtgIg0wzoFs9+TgSqlatcORzeHp592f52k1kkESADrjqyrnaBUtVSZ0I0xBcBUYCmwE/jAGLNdRJ4XkXGOakuBLBHZAawAfmGMyaqtoJVSnpeaak0ru0O0rIYhDenevLuOje4lxFQ2pFotSkpKMikpKbZsWynlWlaWdcqlOufR7110L0v3LeXYz4/VXmDqEhHZYIxJclWmd4oqpS6JjKxeMgdIiEogPTud9Oz02glKuU0TulKKwkIYMwYWLar+uglRCQD6wAsvoAldKcXBg/D553DiRPXXLb5jdFP6Jg9HpapLE7pSiq1brWmPHtVft2lYU2Iax7DpuCZ0u2lCV0qxcKE1rU4PF2cJUQl6hO4FNKErpS71Qb/yypqtnxCVwO4Tuzmfd95zQalq04SulGLQIHjooZqvnxCVgMGwLWOb54JS1Vbl8LlKKf/35z9f3vrFPV02pm+kX3Q/D0SkakKP0JWq5zxxb2FM4xhaNWzF14e+vvzGVI1pQleqnvu//4MOHWrWZbGYiNC7dW+2Ht/qucBUtWlCV6qe+/JL2L/fukv0cnRs2pF9p/ZRZIo8E5iqNk3oStVzH31kTat7y39ZPVv25EL+BfZm7b38oFSNaEJXqh4rLLSm99xz+W31bt0bgO+PfX/5jaka0YSuVD2213Ewfe21l99W12ZdCQ0K1bHRbaQJXal6LCQEpk6F5OTLbys4MJiEqAS2HN9y+Y2pGtGErlQ9dvXV8Kc/QefOnmmvc2Rntmdux67nLNR3mtCVqseOHYO8PM+1l9Q6iYzzGRw+e9hzjSq3aUJXqh4bMgTuustz7fVrY90lui5Nz6PbQRO6UvXUxYuwbx907eq5NuOj4mkQ2IDvjnznuUaV2zShK1VPbd8ORUUQH++5NkMCQ0hslag9XWyiCV2peqr4oRY9e3q23X5t+rHh2AYKigo827CqkiZ0peqprVshLMzq6eJJSa2TuJB/gd0ndnu2YVUlHT5XqXrq9tuhe3cIDPRsu5ceGn18M91bdPds46pSeoSuVD2VnAyTJ3u+3c6RnQkNCiXlaIrnG1eV0oSuVD2UnW2NsnjmjOfbDg4MJq5FnN4xagNN6ErVQykpMGIErKulzijdW3RnU/omvWO0jmlCV6oeKu7h0qNH7bQ/6KpBZF3MYkfmjtrZgHJJE7pS9dC2bRARAa1a1U77w9oPA2DZ/mW1swHlkiZ0peqhrVshLu7yH2pRkZgmMcQ0juHbtG9rZwPKJU3oStUzxsCOHVaXxdqUEJXAhmMbancjqhTth65UPbR6tTUWem0a0HYAn+z+hMzzmTQPb167G1OAHqErVe+IWLf7d+lSu9tJjEoEYFvGttrdkLpEE7pS9cwHH8CHH9b+dro2t4Zx3HliZ+1vTAF6ykWpemfWLGjcGG67rXa306ZRGxqFNGJnpib0uqJH6ErVIxcvwubN0K9f7W9LROjWvBvbM7fX/sYU4GZCF5FRIrJbRFJFZHol9caLiBGRJM+FqJTylO+/h4KCuknoAN2bd2drxla9Y7SOVJnQRSQQmAuMBroBE0Wkm4t6jYDHAB3ZXikvVXyrf10l9H7R/Thx4QT7T+2vmw3Wc+4cofcFUo0x+40xecBC4CYX9X4NzAJyPBifUsqD9uyBmBiIiqqb7RUPpbs1Y2vdbLCecyehtwGcH+Gd5lh2iYgkAm2NMf+prCEReVBEUkQkJTMzs9rBKqUuz2uvWefQ60r35t0RREderCPuJHRXNwdfOiEmIgHAH4CfV9WQMWaeMSbJGJPUvLneaKCUHRo3rrtthYeE0zGiI5uP1+FfkXrMnYSeBrR1eh8NHHV63wjoAawUkQNAMrBYL4wq5V2WLbOeUpSeXrfb7dmypx6h1xF3Evp6IFZE2otICHAHsLi40BhzxhjTzBjTzhjTDlgLjDPG6ONKlPIiy5fDokV1e4QOEN8ynn0n95Gdl123G66HqkzoxpgCYCqwFNgJfGCM2S4iz4vIuNoOUCnlGevWQXy89WDoutSzZU8Mhu0Z2h+9trl1p6gx5jPgszLLnq2g7tDLD0sp5UmFhbB+PdxzT91vu2fLnoD10Oh+0XXUX7Ke0jtFlaoHduywniOanFz3245pEkNEWISOjV4HNKErVQ+cPQu9etmT0AMkgEFXDeKbQ9/U/cbrGU3oStUDAwfChg3QsaM92x/QdgB7T+4l87zef1KbNKErVQ8UFNi7/YFtBwKw5vAaewPxc5rQlfJzp05B06bw1lv2xdC7dW9CAkNYkrrEviDqAU3oSvm51autC6IxMfbFEBoUyuiOo1m6b6l9QdQDmtCV8nMrVkBoKPTvb28cQ2KG8MPpH0jPruNbVesRTehK+bmlS2Hw4Np/KHRVerfuDcCGoxvsDcSPaUJXyo8dOgS7dsHIkXZHYj00OlAC9cJoLdKErpQfCwmBmTNhnBcM0tGoQSOSo5NZ/sNyu0PxW5rQlfJjUVEwY4Z9/c/L6temH5uPb6agyOZ+lH5KE7pSfqqgAD79FM6ftzuSEj1b9iSnIIc9WXvsDsUvaUJXyk+tXw9jx1pJ3VskR1tjD6xNW2tzJP5JE7pSfmrOHGt6/fX2xuEsNjKWxg0a892R7+wOxS9pQlfKT61xdCaJiLA3DmcBEkBS6yTWH11vdyh+SRO6Un4oPR0OH7YuiHqb5OhkNqdv5kzOGbtD8Tua0JXyQ0uWgDEwfrzdkZR3XfvrKDSFfHNYh9P1NE3oSvmhe+6BLVuge3e7IykvOTqZ4IBgVh1YZXcofsetR9AppXyLCMTF2R2Fa1cEX0HfNn1ZdVATuqfpEbpSfua99+AnP4ELF+yOpGJDYoaQcjSF7Lxsu0PxK5rQlfIzCxbAqlUQFmZ3JBW7tv21FJpCVh5YaXcofkUTulJ+JCsLli+3LoaK2B1Nxa656hoCJVBvMPIwTehK+ZHFi6Gw0Dt7tzgLDQolrmUc646sszsUv6IJXSk/8tFH0L499OpldyRVG9h2IGvT1upAXSPBXa8AABNTSURBVB6kCV0pP2EMdO0KDz3k3adbil3b7lqy87JZvl+H0/UU7baolJ8Qgdmz7Y7CfWM7jSUkMIQv9n3ByI5e8AQOP6BH6Er5gcJC62KoMXZH4r4GQQ0Y0HYAqw+ttjsUv6EJXSk/8M9/WqMqfvaZ3ZFUT1KrJLYe30puQa7dofgFTehK+Thj4PbbrXlveHZodVzX/jpyC3NZkrrE7lD8giZ0pXzcihXW9Be/gCAfuyo2vMNwWoa35J2t79gdil/QhK6Uj3vxRWjZEp5/3u5Iqi8oIIiRHUey4sAKjC9dAPBSmtCV8mEZGbB3L0yfDqGhdkdTMwOiB3Diwgl+OP2D3aH4PE3oSvmwFi1g1y6YMsXuSGpuQNsBAHyx7wubI/F9mtCV8lEbN0JOjnVkHhJidzQ116NFDzpHdmbRrkV2h+Lz3EroIjJKRHaLSKqITHdR/oSI7BCRLSKyXERiPB+qUqrYmTNWj5b777c7kssnIoyJHcOqg6u4mH/R7nB8WpUJXUQCgbnAaKAbMFFEupWpthFIMsb0BD4CZnk6UKVUiRdfhMxM+PnP7Y7EM0Z1HEVOQY4+9OIyuXOE3hdINcbsN8bkAQuBm5wrGGNWGGOKh9NfC0R7NkylVLEdO+Cll2DCBOjd2+5oPGNwzGDCgsL4fO/ndofi09xJ6G2Aw07v0xzLKjIZcPmpiMiDIpIiIimZmZnuR6mUAqybiO6915p/5RVbQ/Go0KBQhrYbypJ9eoPR5XAnobsat81lh1ERuRtIAl52VW6MmWeMSTLGJDVv3tz9KJVSAJw9Cw0awNy50Lq13dF41qiOo9iTtYf9p/bbHYrPciehpwFtnd5HA0fLVhKR64FngHHGGB2YQala0Lix9Xi5hx+2OxLPG9VxFABLU5faHInvciehrwdiRaS9iIQAdwCLnSuISCLwN6xknuH5MJWq34yBF16A48chIMB6+ZvYiFjaN2mvp10uQ5VfC2NMATAVWArsBD4wxmwXkedFZJyj2stAQ+BDEdkkIosraE4pVQO//jX86lfwr3/ZHUntERFGdRzF8v3LySvMszscn+TWUD7GmM+Az8ose9Zp/noPx6WUcvj4Y5gxAyZNsp5G5M9GdxzNX1P+yn8P/Zfr2l9ndzg+xw//cVPKf6xaBXfdBf37w7x5vvFouctxbftrCQ4I1uF0a0gTulJeyhh46im4+mr49799d/Ct6mgY0pBBMYM0odeQJnSlvJQIfPIJLFkCkZF2R1N3RnUYxdaMrRw5e8TuUHyOJnSlvMx//gP33QdFRRAVBVddZXdEdau4++J7296zORLfowldKS9RUAD/8z9w442weTOcPGl3RPbo0aIHQ9sNZc66ORQWFdodjk/RhK6UFzh+HEaMsAbdeuABWLMGmjWzOyp7iAiPJD3C4bOHWbZ/md3h+BRN6ErZzBi44Qb49lt44w2rN0t9uABamZs630ST0CYs3L7Q7lB8iiZ0pWxy8aL1gAoR+OMfYe3akoG36rsGQQ0Y22ksi3Yt0puMqkETulJ1rLAQ3noLunSxTrEADBwI8fH2xuVtftT1R5zOOc3atLV2h+IzNKErVUfy8uCdd6zEfc891jnya6+1OyrvNbTdUMKCwnh367t2h+IzNKErVUcefhjuvtvqjrhwIaxfD0OH2h2V92oS2oQfdfsR72x9h3O55+wOxydoQleqFhw+DK++CsnJsG2bteynP4VPP7XeT5jgnyMmetrkxMlk52WzdJ8OqesO/Uop5SFZWVY/8qQk62agn/3MOs1y6pRVHh8PY8ZoIq+OgW0H0qZRGxZsWmB3KD7BrdEWlVIWYyA9HbZutY60t22DxESYNs3qajhnDvTqBb/9LfzoR9Cpk90R+7bgwGBuiL2B97e/T35hPsGBwXaH5NU0oSvlgjHWzT779lndC693DBDdvTvs3FlSLyoKWra05sPD4cQJ7UPuaWM7jWXe9/P4dO+n3NzlZrvD8Wqa0FW9cvasdWrk5EnIyLBe+fnwk59Y5dOmWYNhpaVZfcQBevSwjsgBJk+GkBCIi7OSe9lH42oy97zRsaNpEd6CNze/qQm9CprQVZ0rKIDcXOv8cm6u9WrdGoKD4dgxOHCgdHleHowdaz0ced066+W8bl4e/OY3EBgIb75pDW51/jycOwdnzljlu3ZZ237kEXi3TC+4yMiShB4RYZ0Dv+kmaNcO2re3Enqxn/+8Ln5CyllQQBD3xN/DK9++wtFzR2ndyM+eju1BPpnQ//jHkiOmYlFR1jMXAV56CfbsKV3erp31CC+AmTPh4EFr3hhr2rUr/PKX1vwvfmGdJ3Uu79ULnnjCmn/kETh9unT5NdfA1KnW/KRJJUd3xeUjRsCDD1pd1saPL1lePL35ZusuwfPnYeLE8uV33WUtP3ECfvzj0mVgtX3LLXDoUElyci7/2c+sC3K7dsGUKeXLn33W6hO9YYPVG6OoyLoBpng6Z461j199BY8+Wr78ww+hb19rOmWKtdy5zpo10LMn/OUv1vplpaZChw7WDTfTp5cvP34cWrSwknXx51wsJMT6bMPDrd4l27ZBw4bWq0MHaNLEiiEgwPrZjBhhLWvRwjpd4nyU/dxz5bet7PdQ74f4/be/Z/aa2bwy8hW7w/FaPpnQN2ywEouzDh1K5r/7zno569mzZH7dOti+veTpLyLWkV6xlBQr4TuXh4eXlG/aZP3b7lzetm1J+fbtJbd0F5c7bz81tWR58bS4J4Qx1r/7Zcuzs635oiIrqRcrrnPxYkl5cV3n8oKCkvaL553Li5N7QIB1JBwYaM0XTxs0sMobNbJON5Qtb9zYKo+JgdtuK1leXCciwirv2xeef95qLyTEmjZoUDIQ1fjxVm+Q4uXFdZo2tcp/+Ut4/PGS5cHBpZ/i87//a70qojfy+KYOER2Y0H0C8zfOZ8aQGTQObWx3SF5JjPNhWh1KSkoyKSkptmxbKeV7Nh7bSK95vXhu6HM8O+TZqlfwUyKywRiT5KpMe8QqpXxCYqtERnUcxdz1c8nOy656hXpIE7pSymfMGDKDjPMZvPKtnkd3RRO6UspnJEcnc0PsDbyw+gV2ZO6wOxyvowldKeVT5t80n4YhDbn7n3dzMf+i3eF4FU3oSimf0iK8BW/d8hYb0zcy9bOpdofjVTShK6V8zthOY3lqwFPM3zSfJalL7A7Ha2hCV0r5pGeHPEv0ldHcu+heVh1YZXc4XkETulLKJ4WHhLNowiIahjRk/IfjSc9Otzsk22lCV0r5rN6te/OvCf/ifN55hi4YWu97vmhCV0r5tLiWcXxyxyecyT3D4DcGs+X4FrtDso0mdKWUzxveYThf3/c1gQGBDPj7ABZuW2h3SLbQhK6U8gsdIzqS8kAKcS3juPufdzN/43y7Q6pzmtCVUn6jbeO2LLlrCb1b92by4sn8ZPFPOJNzxu6w6owmdKWUX2kc2phv7v+GJ/s/yfyN82n/x/Y8+umjnLhwouqVfZwmdKWU3wkKCOLlES+z+r7VxDSJ4S8pfyFqdhQTP57I4t2LySnIsTvEWuHWeOgiMgr4IxAIvG6M+V2Z8gbAW0BvIAuYYIw5UFmbOh66UqqubErfxBsb3+DtLW9zKucUoUGhDIkZwoC2A+gc2ZnOzTrTvkl7rmxwJeL8xBQvVNl46FUmdBEJBPYAw4E0YD0w0Rizw6nOFKCnMeZhEbkDuMUYM6GydjWhK6XqWl5hHsv3L2dJ6hKW7FvCnqzSz6oMlECahDahaVhTml/RnOgro4lqGEWzK5oRERZBRFgEza5oRovwFoQHhxMgAQQGBBIogZemZZcFSECp8sv9g3G5Cb0/MNMYM9Lx/mkAY8yLTnWWOup8KyJBQDrQ3FTSuCZ0pZTdLuRfYG/WXvZk7eHQmUOcyjnFqYunOJlzkmPnjnEs+xjp2emczT3rsW0Kwl9v+CsPJT1Us/UrSejuPFO0DXDY6X0a0K+iOsaYAhE5A0QCpa5CiMiDwIOOt9kistuN7dutGWX2wwfpPngHf9gH8I/9sG0fDIaHZz7Mwzxc0yZiKipwJ6G7+v+g7JG3O3UwxswD5rmxTa8hIikV/TX0FboP3sEf9gH8Yz/8YR9ccaeXSxrg9Ex7ooGjFdVxnHJpDJz0RIBKKaXc405CXw/Eikh7EQkB7gAWl6mzGLjHMT8e+Kqy8+dKKaU8r8pTLo5z4lOBpVjdFucbY7aLyPNAijFmMfB34G0RScU6Mr+jNoOuYz51iqgCug/ewR/2AfxjP/xhH8pxqx+6Ukop76d3iiqllJ/QhK6UUn6iXiZ0EUkQkbUisklEUkSkr2O5iMgcEUkVkS0i0stpnXtEZK/jdY/T8t4istWxzhxx3AYmIhEi8qWj/pci0rQW9mOaiOwWke0iMstp+dOOeHaLyEin5aMcy1JFZLrT8vYiss4R6/uOi9+ISAPH+1RHeTtP74NjO0+KiBGRZo73PvM5iMjLIrLLEee/RKSJU5lPfQ5VqShuu4hIWxFZISI7Hb8DP3Usd/mZe/J75bWMMfXuBXwBjHbMjwFWOs1/jtWvPhlY51geAex3TJs65ps6yr4D+jvW+dyp3VnAdMf8dOAlD+/DtcAyoIHjfQvHtBuwGWgAtAf2YV3MDnTMXw2EOOp0c6zzAXCHY/414BHH/BTgNcf8HcD7tfBZtMW64H4QaOaDn8MIIMgx/1Jx+772ObixnxXGbdcLaAX0csw3whqipFtFn7knv1fe+rI9AJu+CEuxBhADmAi865j/G9Y4NcX1dju+NBOBvzkt/5tjWStgl9PyS/WK13X64u328D58AFzvYvnTwNNl9rW/47W0bD3HF/WEU1K6VK94Xcd8kKOeeHg/PgLigQOUJHSf+RzK7MstwDu++Dm4sW8u467LGNyI8ROsMadcfuae/F5566tennIBHgdeFpHDwGysLye4HuagTRXL01wsB2hpjDkG4Ji28PA+dAIGOf4FXyUifWq4D5HAaWNMgYt9KDWkA1A8pINHiMg44IgxZnOZIl/6HJzdj3UURxWxetXn4KaK4vYKjtNQicA6Kv7MPfm98kru3Prvk0RkGRDlougZYBjwM2PMxyJyO1Y/+uupeAiD6i73iCr2IQjr38NkoA/wgYhcXUlMrv54V7UPl71/VezD/2Cdsii3WgXb9brPwRjziaPOM0AB8E7xahXEZMvn4AHeEINLItIQ+Bh43BhztpLT3F71vaoNfpvQjTHXV1QmIm8BP3W8/RB43TFf0TAHacDQMstXOpZHu6gPcFxEWhljjolIKyDDw/vwCPBPY/0v+J2IFGENOFTZUA2ulp8AmohIkOPoz7l+cVtpUsMhHSraBxGJwzq3vNnxCxgNfC/WBWqf+Rwc+3IPMBYY5vg8qGQfqGB5rX4OHuDOECB1TkSCsZL5O8aYfzoWV/SZe/J75Z3sPudjxwvYCQx1zA8DNjjmb6D0RZPvHMsjgB+wjoibOuYjHGXrHXWLL5qMcSx/mdIXZmZ5eB8eBp53zHfC+pdRgO6Uvhi3H+uCVpBjvj0lF7W6O9b/kNIX46Y45h+l9MW4D2rxMzlAyTl0X/ocRgE7sIaLdl7uk59DJftZYdx2vRyf9VvAq2WWu/zMPfm98taX7QHY9EW4Btjg+FKuA3o7fUHmYl3N3wokOa1zP5DqeN3ntDwJ2OZY58+U3H0bCSwH9jqmER7ehxDgH45tfw9c51T2jCOe3Thdlce6yr/HUfaM0/Krsa7mpzqSSnHPmVDH+1RH+dW1+JkcoCSh+9LnkIr1x3ST4/WaL38OVeyry7jtejl+jw2wxennP6aiz9yT3ytvfemt/0op5Sfqay8XpZTyO5rQlVLKT2hCV0opP6EJXSml/IQmdKWU8hOa0JXPEZFIsUbK3CQi6SJyxDF/WkR21ML2horIf6q5zkoRKfcQYhG5V0T+7LnolCqhCV35HGNMljEmwRiTgHUDzh8c8wlAUVXrO+62VMrvaEJX/iZQRP7PMT72FyISBpeOmH8rIquAn4pIcxH5WETWO14DHfWGOB39bxSRRo52G4rIR46xz98pHhdbRIY56m0Vkfki0qBsQCJyn4jscWx7YB39HFQ9pAld+ZtYYK4xpjtwGviRU1kTY8wQY8zvgT9iHdn3cdQpHs/nSeBRxxH/IOCiY3ki1iid3bDu6BwoIqHAAqyhmOOwbo9/xDkYx1giz2El8uGO9ZWqFZrQlb/5wRizyTG/AWjnVPa+0/z1wJ9FZBOwGLjScTT+DfCKiDyG9QegeDjb74wxacaYIqxbzNsBnR3b2+Oo8yYwuEw8/bAeoJJpjMkrE4NSHqXnEpW/yXWaLwTCnN6fd5oPwHpoxEVK+52IfIo1JshaESkeabFsu0G4Hl7VFR1fQ9UJPUJX9dUXwNTiNyKS4Jh2MMZsNca8BKQAXSppYxfQTkQ6Ot5PAlaVqbMOGOromRMM3OapHVCqLE3oqr56DEhyPCx4B9ZwxACPi8g2EdmMdf7884oaMMbkAPcBH4rIVqweNq+VqXMMmAl8i/UM2O89vSNKFdPRFpVSyk/oEbpSSvkJTehKKeUnNKErpZSf0ISulFJ+QhO6Ukr5CU3oSinlJzShK6WUn/h/YWU5pfd3E7oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\")\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\")\n",
    "    plt.xlabel(\"Threshold\")\n",
    "    plt.legend(loc=\"upper left\")\n",
    "    plt.ylim([0, 1])\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_pred_90 = (y_scores > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.775178026449644"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7028223574986165"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True, ..., False, False, False])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold_90_precision = thresholds[np.argmax(precisions >= 0.90)]\n",
    "y_train_pred_90 = (y_scores >= threshold_90_precision)\n",
    "y_train_pred_90"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9001349527665317"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "plot_roc_curve(fpr, tpr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9539757494200404"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n",
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n",
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(random_state=42)\n",
    "y_probas_forset = cross_val_predict(forest_clf, X_train, y_train_5, cv=3,\n",
    "                                   method=\"predict_proba\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 0.],\n",
       "       [1., 0.],\n",
       "       [0., 1.],\n",
       "       ...,\n",
       "       [1., 0.],\n",
       "       [1., 0.],\n",
       "       [1., 0.]])"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_probas_forset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_scores_forest = y_probas_forset[:, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:3: MatplotlibDeprecationWarning: Unrecognized location 'bottom right'. Falling back on 'best'; valid locations are\n",
      "\tbest\n",
      "\tupper right\n",
      "\tupper left\n",
      "\tlower left\n",
      "\tlower right\n",
      "\tright\n",
      "\tcenter left\n",
      "\tcenter right\n",
      "\tlower center\n",
      "\tupper center\n",
      "\tcenter\n",
      "This will raise an exception in 3.3.\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fpr, tpr, \"b:\", label=\"SGD\")\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"bottom right\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9923993357563545"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True, ..., False, False, False])"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 1., ..., 0., 0., 0.])"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.999344262295082"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, [True if y_scores_forest[i]==1 else False for i in range(len(y_scores_forest))])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2811289429994466"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, [True if y_scores_forest[i]==1 else False for i in range(len(y_scores_forest))])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 多分类器\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'sgd_clf' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-1-54ce069691b0>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msgd_clf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0msgd_clf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msome_digit\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'sgd_clf' is not defined"
     ]
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -7378.02319023, -28476.55785623,  -9041.07486112,\n",
       "         -1361.50499581, -12163.53098903,   4356.64054894,\n",
       "        -33022.96010367, -18000.77959087,  -9741.17310421,\n",
       "        -15489.17265603]])"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0. , 0. , 0.1, 0. , 0. , 0.9, 0. , 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.87037592, 0.84534227, 0.88183227])"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:561: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.8995201 , 0.89779489, 0.90593589])"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:561: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n",
      "  ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5597,    0,   15,    8,    8,   43,   32,    5,  214,    1],\n",
       "       [   1, 6420,   45,   19,    3,   45,    4,    7,  188,   10],\n",
       "       [  24,   28, 5278,   83,   65,   24,   60,   42,  347,    7],\n",
       "       [  29,   19,  112, 5230,    1,  203,   25,   44,  403,   65],\n",
       "       [  15,   13,   48,   12, 5222,    8,   36,   21,  304,  163],\n",
       "       [  30,   19,   25,  155,   50, 4494,   82,   18,  482,   66],\n",
       "       [  27,   16,   52,    2,   41,   87, 5564,    6,  123,    0],\n",
       "       [  21,   12,   52,   21,   51,   12,    4, 5714,  168,  210],\n",
       "       [  16,   57,   46,  100,    2,  122,   31,    7, 5427,   43],\n",
       "       [  23,   22,   31,   64,  124,   36,    1,  182,  347, 5119]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3)\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x228c449ae08>"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(conf_mx, cmap=plt.cm.gray)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5923],\n",
       "       [6742],\n",
       "       [5958],\n",
       "       [6131],\n",
       "       [5842],\n",
       "       [5421],\n",
       "       [5918],\n",
       "       [6265],\n",
       "       [5851],\n",
       "       [5949]], dtype=int64)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221); plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222); plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223); plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224); plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "                     metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n",
       "                     weights='uniform')"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False],\n",
       "       [False, False],\n",
       "       [False,  True],\n",
       "       ...,\n",
       "       [False, False],\n",
       "       [False, False],\n",
       "       [False, False]])"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_multilabel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 使用F1值来评估多标签分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_train, cv=3)\n",
    "f1_score(y_train, y_train_knn_pred, average=\"macro\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "noise = rnd.randint(0, 100, (len(X_train), 784))\n",
    "noise = rnd.randint(0, 100, (len(X_test), 784))\n",
    "X_train_mod = X_train + noise\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
